package ningbo.oopextends;

/**
 * @Author 宁铂
 * @Date 2021/7/12 8:32
 * @Version 1.0
 */
public class TestCons {
    /** 本类用于测试继承中构造方法的使用 */
    public static void main(String[] args) {
        Father father = new Father(5);
        Son son = new Son();
        Son son1 = new Son("大头儿子");
    }
}

/** 父类 */
class Father{
    public Father(){
        System.out.println("父类的无参构造");
    }

    public Father(int a){
        System.out.println("父类的含参构造"+a);
    }
}

/** 子类  :
 *  1.子类创建对象时,会默认调用父类的构造方法
 *  子类构造方法中的第一行,默认存在super(); -- 调用父类的无参构造
 *  2.子类创建对象时,要先调用父类的构造方法,至于调用的是父类的那种构造
 *  并没有关系,只要有父类构造调用就可以了
 *  3.构造方法不可以被继承,由于构造方法的语法限制的原因 -- 构造方法要去方法名和本类类名相同
 * */
class Son extends Father{

    public Son(){
        super(4);  //-- 默认存在
        System.out.println("子类的无参构造");
    }

    public Son(String s) {
        //super(); --  默认存在
        System.out.println("之类的含参构造 "+s);
    }
}